import numpy as np
from sklearn.svm import SVC
from matplotlib import pyplot as plt

x = np.array([[0, 1], [1, 1], [1, 2], [0, 2], [1, 0], [-2, -2], [-3, -3], [-3, -4], [-3, -2], [-4, -4], [-4, -2]])
y = np.array([1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2])

print(x.shape)
print(y.shape)

plt.figure()
plt.scatter([point[0] for point in x], [point[1] for point in x])


clf = SVC()
'''
SVC参数：
C:惩罚参数，float,C越大，相当于对误分类的惩罚增大，训练集的准确率很高，但是泛化能力很弱，对测试集的准确率不高。
kernel:string,默认为'rbf'(高斯核函数)，
degree:只对多项式核函数参数有用,int
gamma：默认为auto,float,核函数的系数，如果gamma为auto，表示值为样本特征数的倒数
shrinking：布尔值，默认为True，是否采用启发式收缩方式，
tol：svm停止训练的误差精度，默认1e^-3
cache_size:训练时需要的内存，默认200（MB）
max_iter：最大迭代次数，默认-1，表示不限制
decision_function_shape：决策函数类型，‘ovo’：默认的，one vs one，‘ovr’：one vs rest
'''

'''
sklearn中有三种svm分类器：
SVC
NuSVC
LinearSVC
SVC和NuSVC的区别在于损失的度量方式不同，
LinearSVC的核函数只能是线性核函数。
'''

clf.fit(x, y)
print(clf.predict([[0.5, 1]]))

#plt.show()
